[Design pattern]: 设计模式相关系列
介绍
概念: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
应用场景: 由模板定义统一的公共逻辑,公共入口,子类定义不同的实现.好处:统一了公共部分,父类(模板)控制了子类的流程,子类只能定义规定内的逻辑.
利用抽象类来实现模板模式:
CODE
定义模板类
1 | package note.com.template; |
模板子类1
1 | package note.com.template; |
模板子类2
1 | package note.com.template; |
测试类
1 | package note.com.template; |
结果
1 | //结果: |
钩子方法
一个抽象类,入口函数默认执行1,2,3逻辑, 而2之后有一个判断方法来决定是否执行3. 抽象类的子类可以去覆盖这个判断方法,由具体的子类行为来决定是否执行3.
其中这个判断方法就叫做钩子方法.
补充:子类可以随时挂上逻辑与去掉逻辑,形象的比喻成控制范围内的逻辑挂钩.